import { type TableColumnCtx, type TableProps } from "element-plus";

export type _Align = "left" | "center" | "right";

export type _fixedType = "left" | "right";

export interface EnumProps {
  label?: string; // 选项框显示的文字
  value?: string | number | boolean | any[]; // 选项框值
  disabled?: boolean; // 是否禁用此选项
  tagType?: string; // 当 tag 为 true 时，此选择会指定 tag 显示类型
  children?: EnumProps[]; // 为树形选择时，可以通过 children 属性指定子选项
  [key: string]: any;
}

export type FieldNamesProps = {
  label: string;
  value: string;
  children?: string;
};

//设置表格的基础设置
export interface BaseSetting {
  align?: _Align; //整体对齐方式
}

export interface TableSettingsType<T = any>
  extends Partial<TableProps<T>>,
    BaseSetting {
  context?: any;
}

//在使用column的formatter 函数的时候用到
export type RenderScope<T> = {
  row: T;
  $index: number;
  column: TableColumnCtx<T>;
  [key: string]: any;
};

//在使用column的render-header 函数的时候用的到
export type HeaderRenderScope<T> = {
  $index: number;
  column: TableColumnCtx<T>;
  [key: string]: any;
};

export interface ColumnProps<T = any>
  extends Partial<Omit<TableColumnCtx<T>, "children">> {
  _isShow?: boolean; //是否显示
  children?: ColumnProps<T>[]; // 多级表头
}
